how to write complex sql queries